home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 20
/
Cream of the Crop 20 (Terry Blount) (1996).iso
/
os2
/
lxlt114b.zip
/
lxLite.ger
< prev
next >
Wrap
Text File
|
1996-05-22
|
26KB
|
508 lines
────────────────────────────────────────────────────
lxLite - ein Packer fuer ausfuehrbare OS/2-Dateien
────────────────────────────────────────────────────
Widmung: Meiner kleinen Tochter Alice,
geboren am 12 Feb, 1996 um 03:45.
1. Distribution
───────────────
Dieses Programm ist Freeware. Das heisst, man kann es verbreiten, wie man
will, ausser fuer den kommerziellen Gebrauch. Kommerzielle Verwendung ist
nur mit meiner ausdruecklichen Zustimmung erlaubt. Wie man mich kontaktieren
kann ist in der letzten Sektion dieser Datei zu sehen.
Freeware heisst aber auch, dass es keinerlei Garantie fuer das gibt, was
das Programm macht, ob es das macht was man erwartet, ob es ueberhaupt etwas
macht. Ich uebernehme keinerlei Verantwortung fuer irgendeinen Schaden,
entgangene Profite etc., die durch Fehler dieses Programmes (oder der
Uebersetzung der Dokumentation) verursacht werden.
Wie auch immer, es ist erlaubt, das Programm dazu zu verwenden, um jedes,
auch jedes kommerzielle Produkt zu verbessern. Und zwar nicht um den
eigenen Vorteil, sondern um den Vorteil aller armen User, die sich mit
riesigen ausfuehrbaren Dateien herumaergern muessen.
Das Programm ist ausschliesslich in Virtual Pascal 1.0 Beta #003,
geschrieben, vor allem mit dem eingebauten 32-bit Assembler. Virtual Pascal
ist eine excellente Sprache, die alle Vorteile und Moeglichkeiten von OS/2
bedient und unterstuetzt, gleichzeitig Borland Pascal kompatibel ist, und
einen maechtigen eingebauten Optimierer hat.
Falls du den Source Code von lxLite willst, bitte wende Dich an mich, aber
du musst mir ganz sagen WARUM du ihn brauchst; Leute, die fremde Programme
unter eigenem Namen verkaufen wollen, bekommen ihn sicher nicht.
2. Introduction
───────────────
Ich denke, wir alle sind recht sauer ueber die gewaltige Groesse die fast
alle modernen Programme haben, die unter OS/2 laufen (fuer WinDOS gilt
allerdings das gleiche), ohne oft entscheidend mehr zu koennen als Programme
frueherer Zeiten. Ich verstehe nicht, warum sie so gross sind, weil die
meisten Compiler, sogar IBM CSet generieren Code in moderaten Groessen.
Nehmen wir als Beispiel das allseits bekannte MultiMaint. Was um alles in
der Welt macht das Ding in einer 700K grossen EXE-Datei? Ich verstehe es
nicht. Dazu kommt noch, warum wird die beinahe gleiche EXE-Datei noch
doppelt und dreifach dazugepackt (Ich meine MultiSafe und IniMaint, die mit
MultiMaint daherkommen). Das Programm ist ja ganz nett und es macht seine
Arbeit ganz gut, aber fuer diese Arbeit ist es einfach zu gross. OS/2 kernel
haben etwa den gleichen Umfang. Wo ist da die Relation? Ich kann (und will)
es mir einfach nicht leisten so einen grossen Haufen Mist auf meine Platte
zu laden, also habe ich MultiMaint & Co. wieder gekuebelt. Zu dumm fuer
deren Autoren.
lxLite ist ein Workaround fuer dieses Problem. Ausfuehrbare Dateien kann
man packen, sie nehmen dann nur noch den halben Platz ein, und machen noch
immer den glichen Job. Dummerweise braucht es auch den gleichen Platz im
Speicher - das ist die Schuld des Programmautors.
Soviel ich weiss, gibt es fuer OS/2 nur ein Programm, das etwas Aehnliches
macht, REPACK von IBM (EWS?). Aber verglichen mit lxLite erzeugt es
groessere Dateien, obwohl es den gleichen Algorithmus verwendet. Zum
Beispiel, COURIER.FON aus OS/2 Warp Build 8.192 wird von REPACK zu 44K, von
lxLite aber in 34K gepackt. Spuer den Unterschied! BTW, LINK386+Resource
Compiler compilieren COURIER.FON auch in eine 44K-Datei. Daher denke
ich,dass das sie eine gemeinsame Library verwenden.
Ich komprimierte alle meine ausfuehrbaren Dateien (inklusive aber nicht
nur ?:\os2\*.exe, ?:\os2\dll\*.* und ?:\os2\dll\ibmnull;laserjet) und mein
system ist nach wie vor stabil. Ein lxLite Benutzer (Pavel Roskin) hat
festgestellt, dass lxLite sogar os2krnl komprimiert:-) Sehr angenehm vor
allem fuer eine einzelne Bootdiskette [Anmerkung d. Uebersetzers: Es
stimmt].
3. Features
───────────
lxLite komprimiert die Dateien auf die gleiche Art wie LINK386 es tut. Es
gibt keine andere Moeglichkeit gepackte ausfuehrbare Dateien unter OS/2 zu
implementieren, als die zwei, die OS/2 Warp (oder die eine die 2.x) kennt.
So, hier ist eine kurze Beschreibung dieser beiden Algorithmen:
1. Run-length packing. Das ist im Prinzip die gleiche Methode, wie sie
Microsoft C fuer DOS verwendet. Das Ergebnis ist sehr SCHLECHT, weils sich
ausfuehrbare Dateien nicht fuer die Pack-Methode eignen. Zum Beispiel, PCX
Dateien werden auf die gleiche Art gepackt.
2. Eine Art Lempel-Ziv Algorithmus. Lempel-Ziv ist die Methode, die
beinahe alle DOS-EXE Packer verwenden - LZEXE, PKLITE, PGMPAK etc. Die
Methode die fuer ausfuehrebare OS/2 Dateien standardisiert ist, ist IMHO
nicht die effektivste. Dazu kommt noch, dass ausfuehrbare OS/2 Dateien einen
anderen Ladealgorithmus haben als DOS-EXE-Dateien, Teile von ausfuehrbaren
OS/2-Dateien koennen auch nur geladen werden, wenn sie gebraucht werden.
Deshalb kann ein Lempel-Ziv dictionary nicht ueber eine einzelne Page (4096
Bytes) hinausgehen. Folglich sind die Resultate auch nicht so gut, wie sie
theoretisch sein koennten.
lxLite kann beide Methoden verwenden, sowohl zum Packen, als auch zum
Entpacken.
Im Allgemeinen ergibt die zweite Methode die besseren Resultate, aber
moeglicherweise (?) gibt es Dateien fuer die die erste besser ist.
Aus diesem Grund werden defaultmaessig beide Methoden angewendet, die mit
dem kleineren Ergebnis gewaehlt.
lxLite kann auch benutzt werden, um Dateien zu entpacken, die bereits
komprimiert sind, sei es mit mit lxLite, LINK386 oder REPACK von IBM.
Was fuer Dateien koennen nun mit lxLite gepackt werden? Das LX Format wird
unter OS/2 beinahe ueberall verwendet: Beinahe alles ist im LX format. Nicht
nur EXE-Dateien, sondern auch .DLL, .PDR, .QPR, .DRV, .FON, .SYS-Dateien
koennen mit lxLite gepackt werden.Sogar die VDDs (Virtual Device Drivers) in
\OS2\MDOS koennen damit gepackt werden.Praktisch kann man lxLite auf jedes
Datei loslassen: Wenn es kein LX ist, wird lxLite es nicht anruehren.
Es ist also moeglich, den ganzen \OS2\*\ zu komprimieren, man bekommt jede
Menge Extraplatz ohne irgendwelchen Overhead! Die DeKompressionszeit wird
durch die verkuerzten Ladezeiten der verkleinerten Dateien von der Platte
bei weitem aufgewogen.
Also, Reboot von einer Diskette (eventuell von den beiden
Installationsdisketten und dann F3 waehlen, dann das entsprechende Laufwerk
waehlen, wo das installierte OS/2 liegt. Dann ist folgendes beim Command
prompt einzugeben:
\[path]\lxLite os2\*.exe os2\dll\*.* os2\dll\ibmnull\*.drv
und so weiter. So koennen auch die Dateien, welche zur Laufzeit
normalerweise gesperrt (EXE,DLL) sind, problemlos gepackt werden. lxLite
Version 1.00 und hoeher ist sogar in der Lage Dateien, die gerade benutzt
werden, zu packen. In diesem Fall kann warnt lxLite und fragt nach ob es
das Modul auslassen oder durch seine gepackte Version ersetzen soll.
Grundsaetzlich ist das ersetzen auch so kein Problem, nur muss man im
Hinterkopf behalten, dass das Original bereits im Speciher sitzt, und so
auch jede Menge Platz im SWAPPER.DAT auffressen. Ein Reboot sobald wie
moeglich ist daher immer eine gute Idee.
Versionen von lxLite ueber 1.00 gibt es in zwei verschiedenen EXE-Dateien:
lxLite.exe ist die normale Version fuer OS/2 v2.99, Warp und hoeher. Die
andere, namens lxLite2x.exe ist fuer die aelteren 32 bit Versionen von OS/2
(i.e. 2.x, NICHT 1.x weil unter 1.x gab es das LX Format noch nicht). Als
OS/2 Warp User kann man es getrost loeschen.
4. Optionen
───────────
Es gibt jede Menge Optionen in lxLite. Ic